package com.cyy.springbootinit.model.vo;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.cyy.springbootinit.model.entity.Building;
import com.cyy.springbootinit.model.entity.PaymentBill;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 缴费单表视图
 *
 * @author 程序员cyy</a>
 * @from cyy</a>
 */
@Data
public class PaymentBillVO implements Serializable {
    /**
     * 自增整数，主键，缴费单ID
     */
    @TableId(type = IdType.AUTO)
    private Integer paymentId;

    private Integer dormitoryId;
    /**
     * 整数，用户ID（通过关联表实现关联，此处暂不体现外键）
     */
    private Long userId;

    /**
     * 整数，宿舍水电支出单ID（通过关联表实现关联，此处暂不体现外键）
     */
    private Integer billId;

    /**
     * 日期，缴费日期
     */
    private Date paymentDate;

    /**
     * 浮点数，缴费金额
     */
    private Double paymentAmount;

    /**
     * 字符串，缴费方式（如微信、支付宝、现金等）
     */
    private String paymentMethod;

    /**
     * 字符串，缴费用途（如“水费”、“电费”、“水电费”等，用于明确此次缴费是针对哪种费用）
     */
    private String paymentPurpose;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;


    //用户信息
    private UserVO userVO;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    /**
     * 封装类转对象
     *
     * @param scoringResultVO
     * @return
     */
    public static PaymentBill voToObj(PaymentBillVO scoringResultVO) {
        if (scoringResultVO == null) {
            return null;
        }
        PaymentBill scoringResult = new PaymentBill();
        BeanUtils.copyProperties(scoringResultVO, scoringResult);
        return scoringResult;
    }

    /**
     * 对象转封装类
     *
     * @param
     * @return
     */
    public static PaymentBillVO objToVo(PaymentBill balanceWarning) {
        if (balanceWarning == null) {
            return null;
        }
        PaymentBillVO scoringResultVO = new PaymentBillVO();
        BeanUtils.copyProperties(balanceWarning, scoringResultVO);
        //scoringResultVO.setResultProp(JSONUtil.toList(scoringResult.getResultProp(), String.class));
        return scoringResultVO;
    }
}
